/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package MPMatriculas.com.controladores;

/**
 *
 * @author peter
 */
import MPMatriculas.com.modelo.Estudiante;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;
import  java.sql.Date; 
import java.util.LinkedList;
import java.util.List;

public class ControlEstudainte {
    static Connection con;
static ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();

public static Estudiante consultarCliente(String id) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
      if (id == null) {
          throw new SQLException("No hay elemento clave de la clase Cliente");
     }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Estudiante est = null;
     try {
         pst = con.prepareStatement("select * from estudiante where var_identificacion_estudiante = ?");
         pst.setString(1, id.trim());

         rs = pst.executeQuery();
         while(rs.next()) {

             est = Estudiante.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return est;
    }
}
public static boolean existeCliente(String id) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
      if (id == null) {
          throw new SQLException("No hay elemento clave de la clase Cliente");
     }
         ResultSet rs = null;
         PreparedStatement pst = null;
         boolean est = false;
     try {
         pst = con.prepareStatement("select * from estudiante where var_identificacion_estudiante = ?");
         pst.setString(1, id.trim());

         rs = pst.executeQuery();
         while(rs.next()) {

             est = true;
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return est;
    }
}



public static void registrarCliente(Estudiante est, String correoAcudiente) throws SQLException, Exception {
    
    mbd.conectar();
    con=mbd.getConexion();
    
    Date d=new Date(Calendar.getInstance().getTimeInMillis());
     if (con == null ) {
          throw new SQLException("no hay conexion" );
     }
     PreparedStatement pst = null;//hacer nula la consulata.....
     
     try {
         
          pst = con.prepareStatement("Insert Into estudiante values(?,?,?,?,?,?,?,?,?,?,?,?)");
          pst.setString(1,est.getCodigo());
          pst.setString(2,est.getIdentificacion());
          pst.setString(3,est.getNombre());
          pst.setString(4,est.getApellido());
          pst.setString(5,est.getNombre_madre());
          pst.setString(6,est.getNombre_padre());
          pst.setString(7,est.getBarrio());
          pst.setString(8,est.getResto_direccion());
          pst.setInt(9,est.getNumero_hermanos());
          pst.setString(10,est.getId_acudiente());
          pst.setDate(11, d);
          pst.setBoolean(12, false);
          
          pst.executeUpdate();//actualizamos la tabla. estudiante
          Estudiante e=new Estudiante();
          e.enviarMensaje(correoAcudiente);
          
    }finally {
        if (pst != null) {
             pst.close();
        }
   }
}
public static boolean ActualizarCliente (Estudiante est, String id) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    if ( consultarCliente(id) == null) {
           throw new SQLException ("Cliente no registrado" );
       }
       PreparedStatement pst = null;
       boolean res = false;
       try {//terminar aqui quitaridentificacion
         pst = con.prepareStatement("Update estudiante set  var_nombre_estudiante = ?, var_apellido_estudiante=?, var_nombre_madre_estudiante=?, var_nombre_padre_estudiante=?, var_barrio_estudiante=?, var_direccion_estudiante=?, var_numero_hermanos_estudiante=?, var_nombre_acudiente_estudiante=?, var_id_acudiente_estudiante=?  where var_identificacion_estudiante = "+id) ;
      
          pst.setString(1,est.getNombre());
          pst.setString(2,est.getApellido());
          pst.setString(3,est.getNombre_madre());
          pst.setString(4,est.getNombre_padre());
          pst.setString(5,est.getBarrio());
          pst.setString(6,est.getResto_direccion());
          pst.setInt(7,est.getNumero_hermanos());
          pst.setString(8,est.getId_acudiente());
         int r = pst.executeUpdate();
       if (r != 0) {
          res = true;
       }
       } finally {
          if (pst != null) {
            pst.close();
          }
       }
         return res;
 }
public static boolean EliminarCliente(String id) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    if (consultarCliente(id) == null) {
        throw new SQLException("No hay Cliente para eliminar");
     }
     PreparedStatement pst = null;
     boolean res = false;
     try {
        pst = con.prepareStatement("delete from Cliente where identificacion = ?");
        pst.setString(1, id.trim());
        int r = pst.executeUpdate();
        if (r != 0) {
           res = true;
        }
     } finally {
        if (pst != null) {
           pst.close();
        }
     }
     return res;
}
  //metodo para listar asociados
    public static List<Estudiante> listarCliente(String id) throws SQLException, Exception {
      mbd.conectar();
        con=mbd.getConexion();
        ResultSet rs = null;
     PreparedStatement pst = null;
     List<Estudiante> listaCliente = new LinkedList();
     try {
         //esto es para que solamente muestre, el listado de los alumnos que el acudiente a inscrito..
        pst = con.prepareStatement("select * from estudiante where var_id_acudiente_estudiante=? ");
      pst.setString(1, id);
        rs = pst.executeQuery();
       
        while(rs.next()) {
        
           listaCliente.add(Estudiante.load(rs));
           
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
  }
    return listaCliente;
}

}


